【G Suite】APIからグループのアクセスタイプを含む詳細情報を取得する
こんにちは、IT推進室の杉浦です。
Googleスプレッドシートでグループ一覧を取得した前回の記事は Admin Directory API を利用してグループ一覧の取得を行いそれとをスプレッドシートに書き出すものでした。
一覧の項目としては グループ名 / 説明 / メールアドレス / メンバー数 / グループメンバー の5項目を取得してスプレッドシートに書き出したわけですが、やはりこれだけではグループ情報が足りません。
例えばグループの棚卸をしたいといった場合、メンバーの他にアクセスタイプ等が正しく設定されているかの確認が必要となります。グループ一覧を取得するのであればそれらの情報も欲しいですよね。
そこで今回の内容は前回のグループ一覧に追加でグループ詳細を取得したいという内容にしたい・・・ところでしたが、まずは Groups Settings API で取得できる項目のうちアクセスタイプ等の設定項目についてまとめることにしました。
準備
今回はグループの詳細情報を取得するために Groups Settings API を利用します。GASを利用する場合はAPIの有効化と承認が必要になります。
今回の記事ではスプレッドシートの書き出しまで行いませんのでAPIの動作確認と取得されてくる項目を確認したいだけであれば Groups Settings APIリファレンス のページから Try this API を利用すると簡単に確認できて便利です。
APIからの取得例
以下が、実際に Groups Settings API からグループ情報の取得を行ったコードと結果です。
//グループ詳細取得 function GetGroupSettings () { //対象グループのメールアドレスを指定します。 var groupSettings = AdminGroupsSettings.Groups.get('access-level-test@classmethod.jp'); var keys = Object.keys(groupSettings).sort(); for(var i in keys) { Logger.log(keys[i] + ' : ' + groupSettings[keys[i]]); } }
実行結果
大量のプロパティが返ってきます。これ見ただけでは設定状態がどうなっているのかさっぱりわかりません。また、数がかなり多いですがAPI更新のためとプロパティの統廃合によって利用が非推奨となっているものも含まれています。
allowExternalMembers : false allowGoogleCommunication : false allowWebPosting : true archiveOnly : false customFooterText : customReplyTo : customRolesEnabledForSettingsToBeMerged : false defaultMessageDenyNotificationText : description : グループのアクセスレベルの設定の検証のために作成されました email : access-level-test@classmethod.jp enableCollaborativeInbox : false favoriteRepliesOnTop : true includeCustomFooter : false includeInGlobalAddressList : true isArchived : false kind : groupsSettings#groups maxMessageBytes : 26214400 membersCanPostAsTheGroup : false messageDisplayFont : DEFAULT_FONT messageModerationLevel : MODERATE_NONE name : access-level-test replyTo : REPLY_TO_IGNORE sendMessageDenyNotification : false showInGroupDirectory : true spamModerationLevel : MODERATE whoCanAdd : ALL_MANAGERS_CAN_ADD whoCanAddReferences : NONE whoCanApproveMembers : ALL_MANAGERS_CAN_APPROVE whoCanApproveMessages : OWNERS_AND_MANAGERS whoCanAssignTopics : NONE whoCanAssistContent : NONE whoCanBanUsers : OWNERS_AND_MANAGERS whoCanContactOwner : ANYONE_CAN_CONTACT whoCanDeleteAnyPost : OWNERS_AND_MANAGERS whoCanDeleteTopics : OWNERS_AND_MANAGERS whoCanDiscoverGroup : ALL_IN_DOMAIN_CAN_DISCOVER whoCanEnterFreeFormTags : NONE whoCanHideAbuse : NONE whoCanInvite : ALL_MANAGERS_CAN_INVITE whoCanJoin : CAN_REQUEST_TO_JOIN whoCanLeaveGroup : ALL_MEMBERS_CAN_LEAVE whoCanLockTopics : OWNERS_AND_MANAGERS whoCanMakeTopicsSticky : NONE whoCanMarkDuplicate : NONE whoCanMarkFavoriteReplyOnAnyTopic : NONE whoCanMarkFavoriteReplyOnOwnTopic : NONE whoCanMarkNoResponseNeeded : NONE whoCanModerateContent : OWNERS_AND_MANAGERS whoCanModerateMembers : OWNERS_AND_MANAGERS whoCanModifyMembers : OWNERS_AND_MANAGERS whoCanModifyTagsAndCategories : NONE whoCanMoveTopicsIn : OWNERS_AND_MANAGERS whoCanMoveTopicsOut : OWNERS_AND_MANAGERS whoCanPostAnnouncements : OWNERS_AND_MANAGERS whoCanPostMessage : ANYONE_CAN_POST whoCanTakeTopics : NONE whoCanUnassignTopic : NONE whoCanUnmarkFavoriteReplyOnAnyTopic : NONE whoCanViewGroup : ALL_MEMBERS_CAN_VIEW whoCanViewMembership : ALL_IN_DOMAIN_CAN_VIEW
アクセスタイプ
ここ注目したいのは、やはりアクセスタイプの状態です。必ず確認したいポイントの一つだと思います。
以下によく利用するであろうプロパティと設定値をまとめました。 項目の概要については公式ヘルプ グループのアクセス設定を編集する を参照ください。
アクセス設定
オーナーに連絡 whoCanContactOwner
プロパティ名 | 設定値 | 説明 |
---|---|---|
whoCanContactOwner | ALL_MANAGERS_CAN_CONTACT | グループの管理者 |
ALL_MEMBERS_CAN_CONTACT | グループのメンバー | |
ALL_IN_DOMAIN_CAN_CONTACT | 組織全体 | |
ANYONE_CAN_CONTACT | 外部 |
※執筆時点(2019/06/16)でのリファレンスには"グループのオーナー"に対する設定値が確認できませんでした。
メンバーを表示 whoCanViewMembership
プロパティ名 | 設定値 | 説明 |
---|---|---|
whoCanViewMembership | ALL_OWNERS_CAN_VIEW | グループのオーナー |
ALL_MANAGERS_CAN_VIEW | グループの管理者 | |
ALL_MEMBERS_CAN_VIEW | グループのメンバー | |
ALL_IN_DOMAIN_CAN_VIEW | 組織全体 |
トピックを表示 whoCanViewGroup
プロパティ名 | 設定値 | 説明 |
---|---|---|
whoCanViewGroup | ALL_OWNERS_CAN_VIEW | グループのオーナー |
ALL_MANAGERS_CAN_VIEW | グループの管理者 | |
ALL_MEMBERS_CAN_VIEW | グループのメンバー | |
ALL_IN_DOMAIN_CAN_VIEW | 組織全体 | |
ANYONE_CAN_VIEW | 外部 |
投稿を公開 whoCanPostMessage
プロパティ名 | 設定値 | 説明 |
---|---|---|
whoCanPostMessage | NONE_CAN_POST | 投稿不可 |
ALL_OWNERS_CAN_POST | グループのオーナー | |
ALL_MANAGERS_CAN_POST | グループの管理者 | |
ALL_MEMBERS_CAN_POST | グループのメンバー | |
ALL_IN_DOMAIN_CAN_POST | 組織全体 | |
ANYONE_CAN_POST | 外部 |
※archiveOnly= "false"の場合、whoCanPostMessageをNONE_CAN_POSTに更新するとエラーになります。
※archiveOnlyが「true」から「false」に戻されると、whoCanPostMessagesはALL_MANAGERS_CAN_POSTに設定されます。
メンバーの設定
メンバーを管理 whoCanModerateMembers
プロパティ名 | 設定値 | 説明 |
---|---|---|
whoCanModerateMembers | OWNERS_ONLY | グループのオーナー |
OWNERS_AND_MANAGERS | グループの管理者 | |
ALL_MEMBERS | グループのメンバー |
プロパティ設定例
以下のように設定値が最小の状態のグループに対して試しに設定を実施してみます。
設定値
{ "whoCanContactOwner": "ANYONE_CAN_CONTACT", //オーナーに連絡 "whoCanViewMembership": "ALL_IN_DOMAIN_CAN_VIEW", //メンバーを表示 "whoCanViewGroup": "ALL_MEMBERS_CAN_VIEW", //トピックを表示 "whoCanPostMessage": "ANYONE_CAN_POST", //投稿を公開 "archiveOnly": "false", //whoCanPostMessageの値による "whoCanModerateMembers": "OWNERS_AND_MANAGERS" //メンバーを管理 }
結果
最後に
今回はグループ一覧取得時に同時にアクセスタイプについても項目に追加したい考えから、 Groups Settings API で取得できるプロパティのうちアクセスタイプの設定項目についてまとめてみました。
次回は今回の内容を踏まえて、グループ一覧取得した時にアクセスタイプの状態を同時に取得しグループ管理をする場合に各グループのアクセスタイプの状態まで確認できる内容の記事を書く予定です。
Googleグループは時折アップデートによって設定項目が変化することがあります。Google グループの設定に関する変更について(2019 年 5 月 6 日施行) 古いグループなどは設定内容が現状と合わなくなることがあります。その為こういった試みでグループ管理が楽になると良いなと思います。
次回、またよろしくお願いします。